home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / pascal / tpfast30.zip / FASTKBD.ASM < prev    next >
Assembly Source File  |  1990-09-26  |  22KB  |  523 lines

  1. ;   _______________________________________________________________
  2. ;  |                                                               |
  3. ;  |            Copyright (C) 1989,1990  Steven Lutrov             |
  4. ;  |_______________________________________________________________|____
  5. ;  |                                                               |    |
  6. ;  |  Program Title : FastKbd.Asm                                  |    | ___
  7. ;  |  Author        : Steven Lutrov                                |    |    |
  8. ;  |  Revision      : 2.01                                         |    |    |
  9. ;  |  Date          : 1990-03-16                                   |    |    |
  10. ;  |  Language      : Turbo Assembler                              |    |    |
  11. ;  |                                                               |    |    |
  12. ;  |                                                               |    |    |
  13. ;  |  Description   : Assembly functions  For Keyboard Operations. |    |    |
  14. ;  |                : Using Int 16H or Dos 21H.                    |    |    |
  15. ;  |                : Tested on Turbo Pascal 5.0 & 5.5             |    |    |
  16. ;  |_______________________________________________________________|    |    |
  17. ;      |                                                                |    |
  18. ;      |________________________________________________________________|    |
  19. ;          |                                                                 |
  20. ;          |_________________________________________________________________|
  21. ;
  22.  
  23.  
  24. Code Segment Word Public
  25.  
  26. Assume Cs:Code, Ds:Data
  27.  
  28. Public  Altkeydown,Capslockdown,Capslockon,Freshchar,Clearbuffer
  29. Public  Clearcapslock,Clearins,Clearnumlock,Clearscrolllock,Ctrlkeydown
  30. Public  Getscan,Inskeydown,Inskeyon,Keypause
  31. Public  Leftshiftdown,Nextkey,Lastkey,Numlockdown,Numlockon,Readchar
  32. Public  Readchar,Rightshiftdown,Scrolllockdown,Scrolllockon,Setcapslock
  33. Public  Setins,Setnumlock,Setscrolllock
  34.  
  35. Data    Segment
  36.         Extrn  Errreturn : Byte
  37. Data    Ends
  38.  
  39.  
  40. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  41. ;Function Altkeydown: Boolean;
  42. ;
  43. ;
  44. Altkeydown Proc Far
  45.                 Mov  Ah,2                       ;Bios Kybd Status Func
  46.                 Int  16H                        ;Call The Interrupt
  47.                 Mov  Bl,1                       ;True Value
  48.                 Test Al,8                       ;Test Bit 3
  49.                 Jnz  Altkeydownl1               ;Jump If True
  50.                 Mov  Bl,0                       ;False Value
  51. Altkeydownl1:   Mov  Al,Bl                      ;Place Value For Return
  52.                 Ret
  53. Altkeydown Endp
  54.  
  55.  
  56.  
  57. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  58. ;Function Capslockdown: Boolean;
  59. ;
  60. ;
  61. Capslockdown Proc Far
  62.                 Sub  Ax,Ax                      ;Clear Ax
  63.                 Mov  Es,Ax                      ;Point Es To 0000:0000
  64.                 Mov  Si,418H                    ;Offset Of Status Byte
  65.                 Mov  Bl,64                      ;Test Bit 6
  66.                 Mov  Al,1                       ;True Value
  67.                 Test Es:[Si],Bl                 ;Test The Bit
  68.                 Jnz  Capslockdownl1             ;Jump If True
  69.                 Mov  Al,0                       ;False Value
  70. Capslockdownl1: Ret
  71. Capslockdown Endp
  72.  
  73.  
  74. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  75. ;Function Capslockon: Boolean;
  76. ;
  77. ;
  78. Capslockon Proc Far
  79.                 Mov  Ah,2                       ;Bios Kybd Status Func
  80.                 Int  16H                        ;Call The Interrupt
  81.                 Mov  Bl,1                       ;True Value
  82.                 Test Al,64                      ;Test Bit 6
  83.                 Jnz  Capslockonl1               ;Jump If True
  84.                 Mov  Bl,0                       ;False Value
  85. Capslockonl1:   Mov  Al,Bl                      ;Place Value For Return
  86.                 Ret
  87. Capslockon Endp
  88.  
  89.  
  90. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  91. ;Function Freshchar: Char;
  92. ;
  93. ;
  94. Freshchar Proc Far
  95.                 Mov  Ah,0Ch                     ;Dos Function Number
  96.                 Mov  Al,7                       ;Keyboard Read Function
  97.                 Int  21H                        ;Wait For A Keystroke
  98.                 Ret
  99. Freshchar Endp
  100.  
  101.  
  102. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  103. ;Procedure Clearbuffer;
  104. ;
  105. ;
  106. Clearbuffer Proc Far
  107. Clrbufferl1:    Mov  Ah,6                       ;Function Number
  108.                 Mov  Dl,0Ffh                    ;Subfunction Number
  109.                 Int  21H                        ;Seek Keystroke
  110.                 Jnz  Clrbufferl1                ;Repeat If One Found
  111.                 Ret
  112. Clearbuffer Endp
  113.  
  114.  
  115. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  116. ;Procedure Clearcapslock;
  117. ;
  118. ;
  119. Clearcapslock Proc Far
  120.                 Sub  Ax,Ax                      ;Clear Ax
  121.                 Mov  Es,Ax                      ;Es Pts To 0000:0000
  122.                 Mov  Al,10111111B               ;Bit 6
  123.                 And  Es:[417H],Al               ;Clear The Bit
  124.                 Ret
  125. Clearcapslock Endp
  126.  
  127.  
  128. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  129. ;Procedure Clearins;
  130. ;
  131. ;
  132. Clearins  Proc Far
  133.                 Sub  Ax,Ax                      ;Clear Ax
  134.                 Mov  Es,Ax                      ;Es Pts To 0000:0000
  135.                 Mov  Al,01111111B               ;Bit 7
  136.                 And  Es:[417H],Al               ;Clear The Bit
  137.                 Ret
  138. Clearins  Endp
  139.  
  140.  
  141. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  142. ;Procedure Clearnumlock;
  143. ;
  144. ;
  145. Clearnumlock Proc Far
  146.                 Sub  Ax,Ax                      ;Clear Ax
  147.                 Mov  Es,Ax                      ;Es Pts To 0000:0000
  148.                 Mov  Al,11011111B               ;Bit 5
  149.                 And  Es:[417H],Al               ;Clear The Bit
  150.                 Ret
  151. Clearnumlock Endp
  152.  
  153.  
  154. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  155. ;Procedure Clearscrolllock;
  156. ;
  157. ;
  158. Clearscrolllock Proc Far
  159.                 Sub  Ax,Ax                      ;Clear Ax
  160.                 Mov  Es,Ax                      ;Es Pts To 0000:0000
  161.                 Mov  Al,11101111B               ;Bit 4
  162.                 And  Es:[417H],Al               ;Clear The Bit
  163.                 Ret
  164. Clearscrolllock Endp
  165.  
  166.  
  167. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  168. ;Function Ctrlkeydown: Boolean;
  169. ;
  170. ;
  171. Ctrlkeydown Proc Far
  172.                 Mov  Ah,2                       ;Bios Kybd Status Func
  173.                 Int  16H                        ;Call The Interrupt
  174.                 Mov  Bl,1                       ;True Value
  175.                 Test Al,4                       ;Test Bit 2
  176.                 Jnz  Ctrlkeydownl1              ;Jump If True
  177.                 Mov  Bl,0                       ;False Value
  178. Ctrlkeydownl1:  Mov  Al,Bl                      ;Place Value For Return
  179.                 Ret
  180. Ctrlkeydown Endp
  181.  
  182.  
  183.  
  184. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  185. ;Function Getscan: Byte;
  186. ;
  187. ;
  188. Getscan Proc Far
  189.                 Mov  Dx,0Ffh                    ;Assume No Keystroke
  190.                 Mov  Ah,1                       ;Bios Func To Chk Buffer
  191.                 Int  16H                        ;Chk For Keystroke
  192.                 Jz   Getscanl4                  ;Jump If Buffer Empty
  193.                 Mov  Dl,Ah                      ;Assume Ascii Code
  194.                 Or   Al,Al                      ;Test For Extended Code
  195.                 Jnz  Getscanl4                  ;Jump If Ascii Code
  196.                 Cmp  Ah,84                      ;Test For Func+Shift Keys
  197.                 Jb   Getscanl3                  ;Jump Ahead If Below
  198.                 Cmp  Ah,94                      ;Test If Func + Shift
  199.                 Jnb  Getscanl1                  ;Jump Ahead If Not
  200.                 Sub  Ah